/**
 * 全局过滤器
 * @param Vue
 */
import moment from 'moment';
const install = function (Vue) {

  /**
   * 过滤state中的内容
   * @author Canaan
   * @date 2019/3/8 17:12
   */
  function stateFilter(arr, val) {
    let _arr = arr.filter((item) => {
      return item.value === val;
    });
    if (_arr.length === 0) {
      return val;
    }
    return _arr[0].label;
  }

  /**
   * 空字符过滤
   */
  Vue.filter('emptyFilter', function (val) {
    if (val === undefined || val === null) {
      return '-';
    }
    if (typeof val === 'string' && val.trim() === '') {
      return '-'
    }
    return val;
  });

  /**
   * 日期格式化【YYYY-MM-DD HH:mm:ss】
   */
  Vue.filter('datetimeFormat', function (val) {
    if (!val || val === 0) {
      return '';
    }
    return moment(val).format('YYYY-MM-DD HH:mm:ss');
  });

  /**
   * 日期格式化【YYYY-MM-DD HH:mm:ss.SSS】
   */
  Vue.filter('timestampFormat', function (val) {
    if (!val || val === 0) {
      return '';
    }
    return moment(val).format('YYYY-MM-DD HH:mm:ss.SSS');
  });

  /**
   * 日期格式化【YYYY-MM-DD】
   */
  Vue.filter('dateFormat', function (val) {
    if (!val || val === 0) {
      return '';
    }
    return moment(val).format('YYYY-MM-DD');
  });

  /**
   * 日期格式化【MM-DD HH:mm:ss】
   */
  Vue.filter('dateFormatNoY', function (val) {
    if (!val || val === 0) {
      return '';
    }
    return moment(val).format('MM-DD HH:mm:ss');
  });

  /**
   * 字符串长度格式化，最长15个字符，其余的以（...）展示
   */
  Vue.filter('strAbbr15', function (val) {
    if (val && val.length > 15) {
      return val.substring(0, 15) + "...";
    }
    return val;
  });

  /**
   * 字符串长度格式化，最长7个字符，其余的以（...）展示
   */
  Vue.filter('strAbbr7', function (val) {
    if (val && val.length > 7) {
      return val.substring(0, 7) + "...";
    }
    return val;
  });


  Vue.filter('strAbbr4', function (val) {
    if (val && val.length > 4) {
      return val.substring(0, 4) + "...";
    }
    return val;
  });


  /**
   * 限制字符串长度为120
   */
  Vue.filter('ellipsis', function (val) {
    if (!val) return '';
    if (val.length > 100) {
      return val.slice(0, 100) + '...'
    }
    return val
  });



};

export default install;
